import jieba
from gensim import corpora, models, similarities
# 1、生成分词列表
from main import num_features

text = '七月七日长生殿，夜半无人私语时。'
words = jieba.lcut(text)
print(words)
# 2、基于文本集建立词典，获取特征数
# 文本集
text1 = '南方医院无痛人流'
text2 = '北方人流浪到南方'
texts = [text1, text2]
# 将文本集生成分词列表
texts = [jieba.lcut(text) for text in texts]
print('文本集：', texts)
# 基于文本集建立词典
dictionary = corpora.Dictionary(texts)
print('词典：', dictionary)
# 提取词典特征数
feature_cnt = len(dictionary.token2id)
print('词典特征数：%d' % feature_cnt)
# 基于词典建立新的【语料库】
corpus = [dictionary.doc2bow(text) for text in texts]
print('语料库：', corpus)
# 用【词典】把【搜索词】也转换为【稀疏向量】
keyword = '无痛人流'
kw_vector = dictionary.doc2bow(jieba.lcut(keyword))
# 用语料库来训练TF-IDF模型
tfidf = models.TfidfModel(corpus)
print(tfidf)
new_vec = dictionary.doc2bow(jieba.lcut(keyword))
# 相似度计算
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features)
print('\nTF-IDF模型的稀疏向量集：')
for i in tfidf[corpus]:
    print(i)
print('\nTF-IDF模型的keyword稀疏向量：')
print(tfidf[new_vec])
print('\n相似度计算：')
sim = index[tfidf[new_vec]]
for i in range(len(sim)):
    print('第', i+1, '句话的相似度为：', sim[i])